package cn.edu.nju.software.greencreditsystem.DAO;

import cn.edu.nju.software.greencreditsystem.domain.FinancialFactor;
import java.awt.image.BufferedImage;
import java.sql.Date;
import java.util.List;

/**
 * 作者：何启睿
 * 创建时间：2011-8-8
 * 类描述：财务指标类DAO接口
 */
public interface FinancialFactorDAO
{
    public FinancialFactor getByID(int id);
    public FinancialFactor getByName(String name);
    public List<FinancialFactor> getByType(String type);
    
    
    /**
     * 方法描述：取得所有财务因素
     * param：
     * return：FinancialFacttor对象列表（按type属性升序排列）
    */
    public List<FinancialFactor> getAll();
    
    /**
     * 方法描述：取得指定财务因素在指定时间（精确到月）所有企业均值
     * param：财务指标，日期
     * return：均值
    */
    public double getAverage(int financialFactorID, Date date);
    
    /**
     * 方法描述：取得企业的一项财务指标在指定时间段内（前后闭区间）的横纵向比较折线图
     * param：企业、财务指标、开始时间、结束时间、图片宽度，图片高度
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int financialFactorID, Date begin, Date end, int width, int height);
    
    /**
     * 方法描述：取得企业的一项财务指标在指定时间段内的横纵向比较折线图（图片宽高使用默认值600、380）
     * param：企业、财务指标、开始时间、结束时间
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int financialFactorID, Date begin, Date end);
    
    /**
     * 方法描述：取得企业的一项财务指标有史以来的横纵向比较折线图
     * param：企业、财务指标、图片宽度，图片高度
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int financialFactorID, int width, int height);
    
    /**
     * 方法描述：取得企业的一项财务指标有史以来的横纵向比较折线图（图片宽高使用默认值600/380）
     * param：企业、财务指标
     * return：包含折线图的BufferedImage对象
    */
    public BufferedImage drawImage(int enterpriseID, int financialFactorID);
}
